#!/usr/bin/env python3
# -*- coding: utf-8 -*-

print('\n#=====================获取操作系统信息')
import os
os_name = os.name # 操作系统类型
if os_name == 'posix':
    print('系统是Linux、Unix或Mac OS X')
elif os_name == 'nt':
    print('系统是windows')

#print(os.uname()) #在windows上不好使

print('\n#=====================获取环境变量')
#print(os.environ)  #获取所有环境变量
print(os.environ.get('PATH'))
print('\n', os.environ.get('x', 'default'))
#os.getenv() 获取一个环境变量，如果没有返回none
#os.putenv(key, value) 设置一个环境变量值


print('\n#=====================操作文件和目录')
print('当前工作目录：', os.path.abspath('.'))
print('当前工作目录：', os.getcwd()) #函数得到当前工作目录，即当前Python脚本工作的目录路径
print('当前工作目录：', os.curdir)  #返回当前目录 ('.')
#os.chdir(dirname) 改变工作目录到dirname

print('\n#===创建目录：在当前目录下')
currentDir = os.path.abspath('.')
newDir = os.path.join( os.path.abspath('.'), 'newDir')
#os.mkdir(newDir)  #如果已经存在，则抛出异常
print('创建了新目录：', newDir)

print('\n#===删除目录')
#os.rmdir('J:/eee')

print('\n#===拼路径：os.path.join()--可以屏蔽操作系统的差异')


print('\n#===拆分路径：拆出目录和文件名')
T = os.path.split('C:/Users/michael/testdir/file.txt')
print(T)  #('C:/Users/michael/testdir', 'file.txt')

print('\n#===拆分路径：拆出后缀')
T = os.path.splitext('C:/Users/michael/testdir/file.txt')
print(T)  #('C:/Users/michael/testdir/file', '.txt')
print('后缀是：', T[1])

print('\n#===os中的一些常量')
#os.sep 可以取代操作系统特定的路径分隔符。windows下为 '\\'
#os.linesep 字符串给出当前平台使用的行终止符。例如，Windows使用 '\r\n'，Linux使用 '\n' 而Mac使用 '\r'

print('\n#===文件操作')
'''
os.path.exists()  检验给出的路径是否真地存在
os.isfile()
os.rename('J:/C.java', 'J:/C1.java')
os.remove('J:/C1.java')
os.path.getsize(name) 获得文件大小，如果name是目录返回0L
os.path.basename('J:/C.java') 返回文件名  C.java
os.path.dirname('J:/C.java') 返回路径中的目录路径 J:/

shutil.copyfile( src, dst) 从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException. 如果当前的dst已存在的话就会被覆盖掉
shutil.move( src, dst)  移动文件或重命名
shutil.copymode( src, dst) 只是会复制其权限其他的东西是不会被复制的
shutil.copystat( src, dst) 复制权限、最后访问时间、最后修改时间
shutil.copy( src, dst)  复制一个文件到一个文件或一个目录
shutil.copy2( src, dst)  在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了，类似于cp –p的东西
shutil.copy2( src, dst)  如果两个位置的文件系统是一样的话相当于是rename操作，只是改名；如果是不在相同的文件系统的话就是做move操作
shutil.copytree( olddir, newdir, True/Flase)
把olddir拷贝一份newdir，如果第3个参数是True，则复制目录时将保持文件夹下的符号连接，如果第3个参数是False，则将在复制的目录下生成物理副本来替代符号连接
shutil.rmtree( src ) 递归删除一个目录以及目录内的所有内容
'''
print(os.path.basename('J:/C.java')) #C.java


print('\n#===目录操作：')
'''
os.path.exists()  检验给出的路径是否真地存在
os.isdir()
os.mkdir(newDir) #如果已经存在，则抛出异常
os.makedirs(path) 递归的创建目录
os.rmdir('/Users/michael/testdir') #如果不存在，则抛出异常，如果存在但不为空，也抛出异常
os.listdir('.')  #列出指定目录下的所有目录和文件
os.path.isdir(x) #是否目录
[x for x in os.listdir('.') if os.path.isdir(x)] 列出所有目录
[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'] #列出所有py文件
'''


print('\n#===运行ping www.baidu.com')
os.system('ping www.baidu.com') #运行shell命令


print('\n#===')

#
